using System.Text.Json.Serialization;
using ZR.Model;

namespace ZR.Model.System.Dto
{
    /// <summary>
    /// 雷达基础信息请求对象
    /// </summary>
    public class WindLidarInfoRequestDto
    {
        /// <summary>
        /// 命令类型
        /// </summary>
        public string CommandType { get; set; } = "deviceInfo";

        /// <summary>
        /// 命令数据
        /// </summary>
        public object CommandData { get; set; } = null;
    }

    /// <summary>
    /// 雷达基础信息响应对象
    /// </summary>
    public class WindLidarInfoResponseDto
    {
        /// <summary>
        /// 是否成功
        /// </summary>
        public bool Success { get; set; }

        /// <summary>
        /// 消息
        /// </summary>
        public string Message { get; set; }

        /// <summary>
        /// 详细信息
        /// </summary>
        public string Detail { get; set; }

        /// <summary>
        /// 雷达基础信息数据
        /// </summary>
        public WindLidarInfoData Data { get; set; }
    }

    /// <summary>
    /// 雷达基础信息数据
    /// </summary>
    public class WindLidarInfoData
    {
        /// <summary>
        /// 波束数量
        /// </summary>
        [JsonPropertyName("beamnumber")]
        public List<int> BeamNumber { get; set; }

        /// <summary>
        /// 方向
        /// </summary>
        [JsonPropertyName("direction")]
        public bool Direction { get; set; }

        /// <summary>
        /// 最大箱数
        /// </summary>
        [JsonPropertyName("maxbins")]
        public int MaxBins { get; set; }

        /// <summary>
        /// 最大范围
        /// </summary>
        [JsonPropertyName("maximumrange")]
        public int MaximumRange { get; set; }

        /// <summary>
        /// 距离分辨率
        /// </summary>
        [JsonPropertyName("rangeresolutions")]
        public List<int> RangeResolutions { get; set; }

        /// <summary>
        /// 扫描模式
        /// </summary>
        [JsonPropertyName("scanMode")]
        public List<int> ScanMode { get; set; }

        /// <summary>
        /// 发射次数
        /// </summary>
        [JsonPropertyName("shots")]
        public int Shots { get; set; }

        /// <summary>
        /// 速度范围
        /// </summary>
        [JsonPropertyName("speedrange")]
        public List<int> SpeedRange { get; set; }
    }

    /// <summary>
    /// 雷达基础信息查询结果
    /// </summary>
    public class WindLidarInfoResultDto
    {
        /// <summary>
        /// 查询是否成功
        /// </summary>
        public bool IsSuccess { get; set; }

        /// <summary>
        /// 响应消息
        /// </summary>
        public string Message { get; set; }

        /// <summary>
        /// 详细信息
        /// </summary>
        public string Detail { get; set; }

        /// <summary>
        /// 查询时间
        /// </summary>
        public DateTime QueryTime { get; set; }

        /// <summary>
        /// 雷达基础信息数据
        /// </summary>
        public WindLidarInfoData Data { get; set; }

        /// <summary>
        /// 状态描述
        /// </summary>
        public string StatusDescription { get; set; }
    }
}
